package com.kxmall.web.controller.task.service;

import com.kxmall.common.core.page.TableDataInfo;
import com.kxmall.rider.domain.vo.KxRiderOrderVo;
import com.kxmall.rider.domain.vo.RiderOrderStatisticalDTO;

import java.math.BigDecimal;

/**
 * @description: 任务中心
 * @author: kxmall
 * @date: 2020/02/28 11:23
 **/
public interface TaskCenterService {

    /**
     * 根据配送状态获取订单信息列表
     *
     * @param status
     * @param page
     * @param limit
     * @param riderId
     * @return
     * @
     */
    public TableDataInfo<KxRiderOrderVo> list(
            Integer status,
            Integer page,
            Integer limit,
            Long riderId);

    /**
     * 订单详情
     *
     * @param riderOrderId
     * @param riderId
     * @return
     * @
     */
    public KxRiderOrderVo detail(Long riderOrderId,
                                 Long riderId);

    /**
     * 开始配送
     *
     * @param riderOrderId
     * @param lng
     * @param lat
     * @param riderId
     * @return
     * @
     */
    public String begin(Long riderOrderId,
                        BigDecimal lng,
                        BigDecimal lat,
                        Long riderId);

    /**
     * 异常配送
     *
     * @param riderOrderId
     * @param reason
     * @param lng
     * @param lat
     * @param riderId
     * @return
     * @
     */
    public String abnormal(Long riderOrderId,
                           String reason,
                           BigDecimal lng,
                           BigDecimal lat,
                           Long riderId);

    /**
     * 完成配送
     *
     * @param riderOrderId
     * @param lng
     * @param lat
     * @param riderId
     * @return
     * @
     */
    public String complete(Long riderOrderId,
                           BigDecimal lng,
                           BigDecimal lat,
                           Long riderId);

    /**
     * 列表统计
     *
     * @param riderId
     * @return
     * @
     */
    public RiderOrderStatisticalDTO statistical(Long riderId);


    /**
     * 收入列表
     *
     * @param pageNum
     * @param limit
     * @param riderId
     * @return
     * @
     */
    public TableDataInfo<KxRiderOrderVo> income(Integer pageNum,
                                                Integer limit,
                                                Long riderId);


    /**
     * 统计金额
     *
     * @param riderId
     * @return
     * @
     */
    public BigDecimal countIncome(Long riderId);
}
